package com.wd.live.model;



import com.wd.live.bean.BDbankcardBean;
import com.wd.live.bean.ContellationBeen;
import com.wd.live.bean.FansBean;
import com.wd.live.bean.FindLeaderBoardBean;
import com.wd.live.bean.FindLiveListBean;
import com.wd.live.bean.FindConstellationBean;
import com.wd.live.bean.GaiConstellationBean;
import com.wd.live.bean.GaiNameBean;
import com.wd.live.bean.GaiSexBean;
import com.wd.live.bean.LiveTypeListBean;
import com.wd.live.bean.GiftBean;
import com.wd.live.bean.LiveTypeListBean;
import com.wd.live.bean.MineMessageBean;
import com.wd.live.bean.PaymentBean;
import com.wd.live.bean.ModifyConstellationBeen;
import com.wd.live.bean.MusicBeen;
import com.wd.live.bean.OverBDBean;
import com.wd.live.bean.QMBean;
import com.wd.live.bean.RZMessageBean;
import com.wd.live.bean.RenZhengBean;
import com.wd.live.bean.SearchRzBean;
import com.wd.live.bean.SeeBDBean;
import com.wd.live.bean.SignBean;
import com.wd.live.bean.SquareLiveBean;
import com.wd.live.bean.WxBean;
import com.wd.live.bean.YueBean;

import io.reactivex.Observable;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.Header;
import retrofit2.http.HeaderMap;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Query;

import java.util.HashMap;
import java.util.Map;

import retrofit2.http.GET;
import retrofit2.http.QueryMap;

public interface Api {
    @POST("live-user/wxLogin")
    Observable<WxBean> wxLogin(@Query("code")String code, @Header("Content-Type")String contentType);

    //查询直播类型
    @GET("live-platform/findLiveTypeList")
    Observable<LiveTypeListBean> getlivetypelist();
    //查询直播列表
    @GET("live-platform/findLiveList")
    Observable<FindLiveListBean> getlivelist(@Header("userId") int userId, @Query("liveType") int liveType, @Query("page") int page, @Query("size") int size);
    //查询推荐匹配星座列表
    @GET("live-user/verify/findRecommendConstellation")
    Observable<FindConstellationBean> findConstellation(@HeaderMap Map<String,Object> map, @Query("count") int count, @Query("maxFriendId") int maxFriendId);
    //实名认证接口
    @POST("live-user/verify/realNameAuthentication")
    Observable<RenZhengBean> getRenZheng(@Body Map<String ,Object> map,
                                         @Header("userId") int userId, @Header("sessionId") String sessionId,
                                         @Header("Content-Type")String contentType
                                         );
    //查询音乐列表
    @GET("live-platform/findMusicList")
    Observable<MusicBeen> findMusicList(@Query("page") int page, @Query("size") int size);
    //查询实名认证是否成功
    @GET("live-user/verify/checkVerified")
    Observable<SearchRzBean> SearchId(@Header("userId") int userId, @Header("sessionId") String sessionId);
    //查询标签
    @GET("live-user/verify/findLabels")
    Observable<SignBean> findLabels(@Header("userId")int userId, @Header("sessionId")String sessionId);
    //查询实名认证信息
    @GET("live-user/verify/findMyRealName")
    Observable<RZMessageBean> RZMessage(@Header("userId") int userId, @Header("sessionId") String sessionId);
    //查询排行榜数据
    @GET("live-platform/findLeaderBoard")
    Observable<FindLeaderBoardBean> findLeaderBoard();

    //绑定银行卡
    @POST("live-user/verify/bindBankCard")
    Observable<BDbankcardBean> BDbankcard(@Header("userId") int userId, @Header("sessionId") String sessionId,
                                          @QueryMap Map<String , Object> map
                                          );
    //礼物列表
    @GET("live-user/verify/findGiftRecordByUid")
    Observable<GiftBean>GiftList(@Header("userId") int userId, @Header("sessionId") String sessionId,
                                 @Query("type") int type,@Query("page") int page,@Query("size") int size
                                 );
    //查看我的粉丝
    @GET("live-user/verify/findMyFans")
    Observable<FansBean> FansList(@Header("userId") int userId, @Header("sessionId") String sessionId,
                                  @Query("page") int page,@Query("size") int size
                                  );
    //查询星座列表
    @GET("live-user/findConstellationList")
    Observable<ContellationBeen> findConstellationList();

    //查看绑定过的银行卡
    @GET("live-user/verify/findMyBank")
    Observable<SeeBDBean> SeeBD(@Header("userId") int userId, @Header("sessionId") String sessionId);

    //查看我的个人信息
    @GET("live-user/verify/findPersonalInformation")
    Observable<MineMessageBean> MyMessage(@Header("userId") int userId, @Header("sessionId") String sessionId);

    //修改个性签名
    @PUT("live-user/verify/modifySignature")
    Observable<QMBean> QM(@Header("userId") int userId, @Header("sessionId") String sessionId,@Query("count")String count);
    //查询附近主播
    @GET("live-platform/findNearbyLive")
    Observable<SquareLiveBean> findNearbyLive(@Header("userId") int userId,@QueryMap Map<String,Object> map);
    //修改昵称
    @PUT("live-user/verify/modifyNickName")
    Observable<GaiNameBean> gaiName (@HeaderMap Map<String,Object> map,@Query("nickName") String nickName);
    //修改用户性别
    @PUT("live-user/verify/modifySex")
    Observable<GaiSexBean> gaiSex(@HeaderMap Map<String,Object> map,@Query("sex") int sex);
    //    修改用户星座
    @PUT("live-user/verify/modifyConstellation")
    Observable<ModifyConstellationBeen> modifyConstellation(@Header("userId") int userId, @Header("sessionId") String sessionId, @Query("constellationId")int constellationId);
    //修改用户星座
    @PUT("live-user/verify/modifyConstellation")
    Observable<GaiConstellationBean> gaiConstellation(@HeaderMap Map<String,Object> map, @Query("sex") int constellationId);

    @POST("live-user/verify/recharge")
    Observable<PaymentBean> getPayment(@HeaderMap Map<String,Object> map,@QueryMap HashMap<String,Object> map2);

    @GET("live-user/verify/findWalletBalance")
    Observable<YueBean> getmyyue(@HeaderMap Map<String,Object> map);


    //解绑银行卡
    @DELETE("live-user/verify/unbindBankCard")
    Observable<OverBDBean> OverBd(@Header("userId") int userId, @Header("sessionId") String sessionId,@Query("cardNumber")String cardNumber);
}
